﻿using System;
using System.Data;
using Persistence = Entersoft.Data.DotNetDAL.SQL.Persistence;

namespace BLL
{
    public class Distribucion: Common
    {
        public DataTable Carga_DDLBodega() {
            DataTable retorno = null;

            var objRP = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_SEL_CMBBODEGA" };

            using (var objConn = new Persistence(false, ConnDB))
            {
                objConn.ExecuteDataTable(ref objRP);

                if (!objRP.TieneErrores)
                    retorno = objRP.DataTable;
            }

            return retorno;
        }

        public static bool GrabarDistribucion(string Periodo, int Bodega, int NroToma, string Pasillo, int TotalLideres, int TotalOperativos, int TotalUbicacionesDist, ref int DistribucionId, ref string Mensaje)
        {
            var retorno = false;

            var rp = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_INS_DISTRIBUCION" };

            rp.AddParametro(Periodo);
            rp.AddParametro(Bodega);
            rp.AddParametro(NroToma);
            rp.AddParametro(Pasillo);
            rp.AddParametro(TotalLideres);
            rp.AddParametro(TotalOperativos);
            rp.AddParametro(TotalUbicacionesDist);

            using (var obj = new Persistence(true, ConnDB))
            {
                obj.ExecuteDataTable(ref rp);

                if (!rp.TieneErrores)
                {
                    retorno = Convert.ToInt16(rp.DataTable.Rows[0][0]).Equals(0);
                    Mensaje = rp.DataTable.Rows[0][1].ToString();
                    DistribucionId = Convert.ToInt16(rp.DataTable.Rows[0][2]);
                }

                if (retorno)
                    obj.Commit();

            }

            rp.Dispose();

            return retorno;
        }

        public DataTable ObtenerDistribucion(string periodo)
        {
            DataTable retorno = null;

            var objRP = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_SEL_DISTRIBUCION" };
            objRP.AddParametro(periodo);

            using (var objConn = new Persistence(false, ConnDB))
            {
                objConn.ExecuteDataTable(ref objRP);

                if (!objRP.TieneErrores)
                    retorno = objRP.DataTable;
            }

            objRP.Dispose();

            return retorno;
        }

        public static bool GeneraHojaRuta(int DistribucionId, int LiderId, int TotalOperativos, int CantLider, ref string Mensaje)
        {
            var retorno = false;

            var rp = new Entersoft.Data.DotNetResponse.SQL.Persistence();

            rp.AddParametro(DistribucionId);
            rp.AddParametro(LiderId);
            rp.AddParametro(TotalOperativos);
            rp.AddParametro(CantLider);

            rp.StoredProcedure = "SP_INS_CARGA_HOJARUTA";

            using (var obj = new Persistence(true, ConnDB))
            {
                obj.ExecuteDataTable(ref rp);

                if (!rp.TieneErrores)
                {
                    retorno = Convert.ToInt16(rp.DataTable.Rows[0]["RETORNO"]).Equals(0);
                    Mensaje = rp.DataTable.Rows[0]["MENSAJE"].ToString();

                    if (retorno)
                        obj.Commit();
                }
                else
                    Mensaje = rp.Errores;

            }
            return retorno;
        }

        //SP_VALIDA_PERIODO
        public static bool ValidaPeriodo(string periodo, ref string message)
        {
            bool retorno = false;

            var objRP = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_VALIDA_PERIODO" };

            objRP.AddParametro(periodo);

            using (var objConn = new Persistence(false, ConnDB))
            {
                objConn.ExecuteDataTable(ref objRP);

                if (!objRP.TieneErrores)
                {
                    if (objRP.DataTable != null)
                    {
                        retorno = Convert.ToInt32(objRP.DataTable.Rows[0][0]).Equals(0);
                        message = objRP.DataTable.Rows[0][1].ToString();
                    }
                }
                else
                    message = objRP.Errores;
            }

            objRP.Dispose();

            return retorno;
        }

        //public bool EliminarDistribucion(string periodo, string id, string dia, string bodega, string pasillo)
        public bool EliminarDistribucion(string periodo, string id)
        {
            bool retorno = false;

            var objRP = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_DEL_DISTRIBUCION" };

            objRP.AddParametro(periodo);
            objRP.AddParametro(id);

            using (var objConn = new Persistence(true, ConnDB))
            {
                objConn.ExecuteDataTable(ref objRP);

                if (!objRP.TieneErrores)
                {
                    if (objRP.DataTable != null)
                    {
                        retorno = Convert.ToInt32(objRP.DataTable.Rows[0]["RETORNO"]) == 0;
                        Mensaje = objRP.DataTable.Rows[0]["MENSAJE"].ToString();
                        objConn.Commit();
                    }
                }
            }

            objRP.Dispose();

            return retorno;
        }
        public DataTable ObtenerListaDistribucion(string periodo, string tipo, string lider)
        {
            DataTable retorno = null;

            var objRP = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_SEL_CARGA_HOJARUTA" };
            objRP.AddParametro(periodo);
            objRP.AddParametro(tipo);
            objRP.AddParametro(lider);

            using (var objConn = new Persistence(false, ConnDB))
            {
                objConn.ExecuteDataTable(ref objRP);

                if (!objRP.TieneErrores)
                    retorno = objRP.DataTable;
            }

            objRP.Dispose();

            return retorno;
        }
        public bool EliminarListaDistribucion(string periodo)
        {
            bool retorno = false;

            var objRP = new Entersoft.Data.DotNetResponse.SQL.Persistence { StoredProcedure = "SP_DEL_CARGA_HOJARUTA" };

            objRP.AddParametro(periodo);
            

            using (var objConn = new Persistence(true, ConnDB))
            {
                objConn.ExecuteDataTable(ref objRP);

                if (!objRP.TieneErrores)
                {
                    if (objRP.DataTable != null)
                    {
                        retorno = Convert.ToInt32(objRP.DataTable.Rows[0]["RETORNO"]) == 0;
                        Mensaje = objRP.DataTable.Rows[0]["MENSAJE"].ToString();
                        objConn.Commit();
                    }
                }
            }

            objRP.Dispose();

            return retorno;
        }
    }
}
